package com.suncaper.han_yi_system.pojo.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.Builder;

import java.time.LocalDateTime;

/**
 * 菜单实体类（用于权限系统）
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("menu")
public class Menu {

    /**
     * 菜单id
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 菜单名称（如：用户管理、角色管理）
     */
    private String menuName;

    /**
     * 菜单路由 path（如：/user, /role）
     */
    private String menuPath;

    /**
     * 菜单组件路径（如：system/User.vue）
     */
    private String menuComponent;

    /**
     * 菜单图标（如：el-icon-user, icon-user）
     */
    private String menuIcon;

    /**
     * 父菜单id（一级菜单为 null 或 0）
     */
    private Long parentId;

    /**
     * 菜单类型（0:目录, 1:菜单, 2:按钮/权限点）
     */
    private Byte menuType;

    /**
     * 权限标识（如：user:add, role:delete，用于 @PreAuthorize 判断）
     */
    private String permission;

    /**
     * 菜单状态（1:启用, 0:禁用）
     */
    private Byte menuStatus;

    /**
     * 逻辑删除字段（）
     */
    @TableLogic
    private Byte isDeleted;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    private LocalDateTime updateTime;
}
